/* Demo Note:  This demo uses a FileProgress class that handles the UI for displaying the file name and percent complete.
The FileProgress class is not part of SWFUpload.
*/


/* **********************
   Event Handlers
   These are my custom event handlers to make my
   web application behave the way I went when SWFUpload
   completes different tasks.  These aren't part of the SWFUpload
   package.  They are part of my application.  Without these none
   of the actions SWFUpload makes will show up in my application.
   ********************** */
function preLoad() {
	if (!this.support.loading) {
		alert("You need the Flash Player 9.028 or above to use SWFUpload.");
		return false;
	}
}
function loadFailed() {
	alert("Something went wrong while loading SWFUpload. If this were a real application we'd clean up and then give you an alternative");
}

function fileQueued(file) {
	try {
		// var progress = new FileProgress(file, this.customSettings.progressTarget);
		// progress.setStatus("Pending...");
		// progress.toggleCancel(true, this);

	} catch (ex) {
		this.debug(ex);
	}

}

function fileQueueError(file, errorCode, message) {
	try {
		if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
			this.setButtonDisabled(false);
			alert("图片不能超过"+this.settings['file_upload_limit']+"张");
			return;
		}

		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setError();
		progress.toggleCancel(false);

		switch (errorCode) {
		case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
			progress.setStatus("文件太大了，请不要上传超出2M的文件");
			this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
			progress.setStatus("文件大小为零，不能上传空文件");
			this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
			progress.setStatus("图片格式不正确,必须是jpg或png格式的图片");
			this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		default:
			if (file !== null) {
				progress.setStatus("Unhandled Error");
			}
			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		}
	} catch (ex) {
        this.debug(ex);
    }
}

function fileDialogComplete(numFilesSelected, numFilesQueued) {
	try {
		/* I want auto start the upload and I can do that here */
		this.startUpload(this.getFile(0).ID);
		//this.startResizedUpload(this.getFile(0).ID, 100, 100, SWFUpload.RESIZE_ENCODING.JPEG, 100);
	} catch (ex)  {
        this.debug(ex);
	}
}

function uploadStart(file) {
	try {
		/* I don't want to do any file validation or anything,  I'll just update the UI and
		return true to indicate that the upload should start.
		It's important to update the UI here because in Linux no uploadProgress events are called. The best
		we can do is say we are uploading.
		 */
		// var progress = new FileProgress(file, this.customSettings.progressTarget);
		// progress.setStatus("Uploading...");
		// progress.toggleCancel(true, this);
		// this.setButtonDisabled(true);
	}
	catch (ex) {}
	
	return true;
}

function uploadProgress(file, bytesLoaded, bytesTotal) {
	try {
		// var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);

		// var progress = new FileProgress(file, this.customSettings.progressTarget);
		// progress.setProgress(percent);
		// progress.setStatus("Uploading...");
	} catch (ex) {
		this.debug(ex);
	}
}

function uploadSuccess(file, serverData) {
	try {
		var result = serverData.split('|');
		
		if(result[0] != 'success') {
			var progress = new FileProgress(file, this.customSettings.progressTarget);
			progress.setError();
			progress.setStatus(serverData);
			progress.toggleCancel(false);
		} else {
			// var progress = new FileProgress(file, this.customSettings.progressTarget);
			// progress.setComplete();
			// progress.setStatus("上传完成");
			// progress.toggleCancel(false);
			var img_url_s = result[1];
			var img_url_b = result[2];
			addImage(img_url_s,img_url_b);
		}

	} catch (ex) {
		this.debug(ex);
	}
}
//创建放缩略图的大div
function addImage(src_s,src_b) {
	var newDiv = parent.document.createElement("div");
	newDiv.style.margin = "5px";
	newDiv.style.height = "60px";
	newDiv.style.width = "80px";
	newDiv.style.border = "1px solid #7F9DB9";
	newDiv.style.cssFloat = "left";
	newDiv.style.styleFloat = "left";
	newDiv.style.position = "relative";
	newDiv.onmousemove = function(){showDeleteButton(newDiv);};
	newDiv.onmouseout = function(){hiddenDeleteButton(newDiv);};


	var newA = parent.document.createElement("a");
	newA.className = "delete";
	newA.title = "删除";
	newA.href = "javascript::";
	newA.onclick = function(){delDiv(newDiv);};

	// var newInput_s = parent.document.createElement("input");
	// newInput_s.type = "hidden";
	// newInput_s.value = src_s;
	// newInput_s.name = "image_s[]";

	// newA.appendChild(newInput_s);

	var newInput_b = parent.document.createElement("input");
	newInput_b.type = "hidden";
	newInput_b.value = src_b;
	newInput_b.name = "image_b[]";

	newA.appendChild(newInput_b);
	//创建放图片的小div
	var newImgDiv = parent.document.createElement("div");

	var newImg = parent.document.createElement("img");
	newImg.style.height = "60px";
	newImg.style.width = "80px";

	newImgDiv.appendChild(newImg);

	newDiv.appendChild(newImgDiv);
	newDiv.appendChild(newA);
	parent.document.getElementById("thumbImages").appendChild(newDiv);

	if (newImg.filters) {
		try {
			newImg.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 0;
		} catch (e) {
			// If it is not set initially, the browser will throw an error.  This will set it if it is not set yet.
			newImg.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + 0 + ')';
		}
	} else {
		newImg.style.opacity = 0;
	}

	newImg.onload = function () {
		fadeIn(newImg, 0);
	};
	newImg.src = src_b;
}

function fadeIn(element, opacity) {
	var reduceOpacityBy = 5;
	var rate = 30;	// 15 fps


	if (opacity < 100) {
		opacity += reduceOpacityBy;
		if (opacity > 100) {
			opacity = 100;
		}

		if (element.filters) {
			try {
				element.filters.item("DXImageTransform.Microsoft.Alpha").opacity = opacity;
			} catch (e) {
				// If it is not set initially, the browser will throw an error.  This will set it if it is not set yet.
				element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + opacity + ')';
			}
		} else {
			element.style.opacity = opacity / 100;
		}
	}

	if (opacity < 100) {
		setTimeout(function () {
			fadeIn(element, opacity);
		}, rate);
	}
}

function uploadError(file, errorCode, message) {
	try {
		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setError();
		progress.toggleCancel(false);

		switch (errorCode) {
		case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
			progress.setStatus("Upload Error: " + message);
			this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
			progress.setStatus("Upload Failed.");
			this.debug("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.IO_ERROR:
			progress.setStatus("Server (IO) Error");
			this.debug("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
			progress.setStatus("Security Error");
			this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
			progress.setStatus("Upload limit exceeded.");
			this.debug("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
			progress.setStatus("Failed Validation.  Upload skipped.");
			this.debug("Error Code: File Validation Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
			progress.setStatus("Cancelled");
			progress.setCancelled();
			break;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
			progress.setStatus("Stopped");
			break;
		default:
			progress.setStatus("Unhandled Error: " + errorCode);
			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		}
		add_containter_height(progress);
	} catch (ex) {
        this.debug(ex);
    }
}

function uploadComplete(file) {
	if (this.getStats().files_queued === 0) {
		
	}
}

// This event comes from the Queue Plugin
function queueComplete(numFilesUploaded) {
	this.setButtonDisabled(false);
	var stats = this.getStats();
	var status = document.getElementById("divStatus");
	status.innerHTML = "已上传<font color='green'>" + stats.successful_uploads + "</font>张,还可以上传<font color='red'>"+ parseInt(this.settings['file_upload_limit']-stats.successful_uploads) +"</font>张";
}

function delDiv(mydiv) {
	imgName=mydiv.firstChild.firstChild.attributes["src"].nodeValue;;
	var xmlhttp;
	if (window.XMLHttpRequest)
	  {// code for IE7+, Firefox, Chrome, Opera, Safari
	  xmlhttp=new XMLHttpRequest();
	  }
	else
	  {// code for IE6, IE5
	  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	  }
	xmlhttp.onreadystatechange=function()
	  {
	  if (xmlhttp.readyState==4 && xmlhttp.status==200)
	    {
		    mydiv.parentNode.removeChild(mydiv);
			//swfu参见iframe页面中的 swfu = new SWFUpload(settings);
			var stats = swfu.getStats();
			stats.successful_uploads--;
			swfu.setStats(stats);
			var status = document.getElementById("divStatus");
			status.innerHTML = "已上传<font color='green'>" + stats.successful_uploads + "</font>张,还可以上传<font color='red'>"+ parseInt(swfu.settings['file_upload_limit']-stats.successful_uploads) +"</font>张";
	    }
	  }
	xmlhttp.open("GET","./delDiv.php?imgName=" + imgName,true);
	xmlhttp.send();
	// mydiv.parentNode.removeChild(mydiv);
	//swfu参见iframe页面中的 swfu = new SWFUpload(settings);
	// var stats = swfu.getStats();
	// stats.successful_uploads--;
	// swfu.setStats(stats);
	// var status = document.getElementById("divStatus");
	// status.innerHTML = "已上传<font color='green'>" + stats.successful_uploads + "</font>张,还可以上传<font color='red'>"+ parseInt(swfu.settings['file_upload_limit']-stats.successful_uploads) +"</font>张";
}

function showDeleteButton(parentDiv){
	parentDiv.lastChild.style.display = "block";
}

function hiddenDeleteButton(parentDiv){
	parentDiv.lastChild.style.display = "none";
}
